آموزش طراحی سیستم سطح پایین [دیدگاه مصاحبه]

Low Level System Design [An interview perspective]

نکته: آخرین آپدیت رو دریافت میکنید حتی اگر این محتوا بروز نباشد.
نمونه ویدیوها:
توضیحات دوره: مصاحبه Ace the Low Level Design با حل مسائل مطرح شده در دور مصاحبه های برنامه نویسی طراحی سیستم آماده شدن برای مصاحبه های طراحی سیستم [طراحی سطح پایین] روش های مختلف برای نزدیک شدن به یک مشکل و خط کشی نکات کلیدی را یاد بگیرید. بحث در مورد معاوضه ها با مصاحبه کننده و بازی کردن به نقاط قوت خود بهینه سازی کد با استفاده از ساختارهای داده بهتر، با توجه به سناریوی Insights در مورد توسعه‌پذیری مشکل، و کدنویسی را با این هدف به عنوان هدف نهایی در ذهن آغاز کنید. یاد بگیرید که اطلاعات غیر ضروری را از تعریف مسئله حذف کنید، کشش را شناسایی کنید و با آن یک نمودار کلاس بسازید یاد بگیرید که موارد آزمایشی برای مشکل را در صورت لزوم بنویسید. قرار گرفتن در معرض و تغییرات لازم در API برای پایداری کد استفاده از کپسوله سازی در صورت لزوم و ایجاد دلخواه دسترسی‌ها و جهش‌یافته‌ها تکمیل کد را در زمان مصاحبه یاد بگیرید. در مواقع اضطراری بینش خود را در مورد برنامه های جایگزین به دست آورید پیش نیازها: با زبان برنامه نویسی راحت باشید اصول برنامه نویسی شی گرا را بدانید

مصاحبه‌های مهندسی نرم‌افزار بر مهارت‌های کدنویسی و طراحی نرم‌افزار در مصاحبه تمرکز دارند. اینها به ترتیب به عنوان دورهای الگوریتم و طراحی شناخته می شوند. دور الگوریتم‌ها مهارت‌های کدگذاری خام یک داوطلب را با استفاده از ساختارهای داده و الگوریتم‌هایی که بیشتر در مدرسه تمرین می‌شوند بررسی می‌کند، در حالی که دور طراحی مهارت‌های طراحی سیستم را آزمایش می‌کند که می‌تواند طراحی سطح بالا [HLD] یا طراحی سطح پایین [LLD باشد. ].

طراحی سطح پایین با نام طراحی شی گرا [OOD] یا تجزیه و تحلیل و طراحی شی گرا [OOAD] نیز شناخته می شود. از کارآموزان گرفته تا مهندسان ارشد نرم افزار، شرکت های برتر حداقل یک دور را در کل فرآیند مصاحبه برای طراحی سیستم اختصاص می دهند. برای داوطلبانی که کمتر از 3 سال تجربه دارند، طراحی سطح پایین حیاتی ترین نقش را ایفا می کند زیرا این کاندیداها بی تجربه هستند، بنابراین نباید دانش طراحی سطح بالا را داشته باشند. داوطلبانی که بیش از 3 سال تجربه دارند معمولاً با مصاحبه های طراحی سیستم با ترکیبی از HLD و LLD روبرو می شوند.

این دوره طراحی سیستم سطح پایین بر جنبه های سطح پایین طراحی تمرکز دارد. تنها راه برای بهتر شدن در مصاحبه، تمرین بسیاری از مشکلات مشابه است. در این دوره، بر اساس تحقیقات من، لیستی از سوالات متداول در مصاحبه ها تهیه شده است. این نه تنها برای مصاحبه ها مفید است، بلکه برای حل مشکلات کلی و طراحی اپلیکیشن نیز مفید است.

هر مشکلی تفکیک شده و به صورت جامع مورد بحث قرار می گیرد:

  1. پاک کردن بیانیه مشکل از هرگونه ابهام. اصطلاحات مربوط به مشکل توضیح داده شده و انتظارات به خوبی بیان شده است.

  2. ساخت نمودار کلاس به عنوان یک نقشه راه برای کدگذاری مشکل عمل می کند

  3. کدنویسی به زیباترین روش انجام می شود به طوری که کاربران یاد می گیرند که به مشکل از بالا به پایین نزدیک شوند. این مهم است زیرا حتی اگر نمودار کلاس در جای خود قرار داشته باشد، دانستن ترتیب ساخت کلاس در برنامه برای یک تجربه روان ضروری است.

  4. هرجا که لازم باشد، کد بیشتر بهینه می شود. مبادلات مربوط به بهینه سازی نیز مورد بحث قرار گرفته است.

  5. در نهایت، ساخت مورد آزمایشی نشان داده می‌شود تا داوطلب را در مورد نوشتن موارد آزمایشی خوب و تأثیر آنها بر برنامه محتاط کند.

همه اینها با پیروی از بهترین شیوه های صنعت انجام می شود. استفاده مناسب از زمان در طول مصاحبه نیز به طور متناوب در مورد روش های مقابله با شرایطی که نامزد برای مدت طولانی در یک مشکل گیر کرده است صحبت می شود. کد نویسی در C++ انجام می شود، اما کد تا حد زیادی آگنوستیک زبان است.

این دوره همچنین دارای شرح‌های بسته [ زیرنویس انگلیسی ] برای همه ویدیوها است. آنها دست ساز هستند، نه به صورت خودکار. این ویژگی زمانی مفید است که دانش‌آموز با لهجه مشکل دارد، صدای پس‌زمینه زیادی وجود دارد، یا زمانی که می‌خواهید از توضیحات یادداشت‌برداری کنید.

پس از گذراندن این دوره، شما

  1. برای رویارویی با مصاحبه های LLD در مکان بهتری خواهد بود.

  2. می‌تواند در بحث‌های طراحی مرتبط با چنین مشکلاتی شرکت کند

  3. کد بهتر از قبل بنویسید

  4. تئاتر مناسبی داشته باشید تا مشکل را تکه تکه کنید و به طور مستقل با آنها برخورد کنید

غذای آماده تضمینی

  • اگر تمام مشکلات ارائه شده در این دوره را درک کنید، هیچ ترسی از حل سوالات LLD وجود نخواهد داشت. شما سؤالات درستی در مورد مشکل می‌پرسید و با اطمینان از هر طرحی استفاده می‌کنید.


سرفصل ها و درس ها

معرفی Introduction

  • معرفی Introduction

معرفی Introduction

  • معرفی Introduction

برنامه اشتراک گذاری سواری اولیه Basic ride sharing application

  • تعریف مشکل Problem Definition

  • کلاس را برای رزرو سواری طراحی کنید Design the class for booking a ride

  • کلاس Rider را که کاربر را به تصویر می کشد طراحی کنید Design the Rider class depicting the user

  • تست کد برای برآوردن الزامات Testing the code for meeting requirements

  • #فرض 1: کاربر تکی که چندین سفر را در یک زمان رزرو می کند #Assumption 1: Single user booking multiple rides at a time

  • راه حل: یک رابط برای تعامل با کاربر طراحی کنید Solution: Design an interface for user interaction

برنامه اشتراک گذاری سواری اولیه Basic ride sharing application

  • تعریف مشکل Problem Definition

  • بهترین الگوی برنامه نویسی Best Programming Paradigm

  • بهترین الگوی برنامه نویسی Best Programming Paradigm

  • کلاس را برای رزرو سواری طراحی کنید Design the class for booking a ride

  • کلاس Rider را که کاربر را به تصویر می کشد طراحی کنید Design the Rider class depicting the user

  • تست کد برای برآوردن الزامات Testing the code for meeting requirements

  • #فرض 1: کاربر تکی که چندین سفر را در یک زمان رزرو می کند #Assumption 1: Single user booking multiple rides at a time

  • تمرین: یک رابط برای تعامل با کاربر طراحی کنید Exercise: Design an interface for user interaction

  • تمرین: یک رابط برای تعامل با کاربر طراحی کنید Exercise: Design an interface for user interaction

  • راه حل: یک رابط برای تعامل با کاربر طراحی کنید Solution: Design an interface for user interaction

برنامه‌ریز جلسه Meeting Scheduler

  • تعریف مشکل Problem Definition

  • برنامه زمانبندی کلاس را طراحی کنید Design the class Scheduler

  • منطق اصلی برای برنامه ریزی یک جلسه Core logic for scheduling a meeting

  • تست کد برای الزامات داده شده Testing the code for the given requirements

  • تمرین: برنامه را برای رزرو جلسات در طول روز گسترش دهید Exercise: Extend the application to book meetings across days

  • راه حل: برنامه را برای رزرو جلسات در طول روز گسترش دهید Solution: Extend the application to book meetings across days

برنامه‌ریز جلسه Meeting Scheduler

  • تعریف مشکل Problem Definition

  • کلاس اتاق را طراحی کنید که میزبان یک جلسه است Design the Room class, which hosts a meeting

  • کلاس اتاق را طراحی کنید که میزبان یک جلسه است Design the Room class, which hosts a meeting

  • جلسه کلاس را طراحی کنید که حاوی جزئیات جلسه است Design the class Meeting, which contains meeting details

  • جلسه کلاس را طراحی کنید که حاوی جزئیات جلسه است Design the class Meeting, which contains meeting details

  • برنامه زمانبندی کلاس را طراحی کنید Design the class Scheduler

  • منطق اصلی برای برنامه ریزی یک جلسه Core logic for scheduling a meeting

  • تست کد برای الزامات داده شده Testing the code for the given requirements

  • تمرین: برنامه را برای رزرو جلسات در طول روز گسترش دهید Exercise: Extend the application to book meetings across days

  • راه حل: برنامه را برای رزرو جلسات در طول روز گسترش دهید Solution: Extend the application to book meetings across days

Task Planner Task Planner

  • تعریف مشکل Problem Definition

  • کلاس طراحی اسپرینت Design Sprint class

  • تست کد برای الزامات داده شده Testing the code for the given requirements

Task Planner Task Planner

  • تعریف مشکل Problem Definition

  • کلاس طراحی اسپرینت Design Sprint class

  • کلاس وظایف طراحی Design Task class

  • کلاس وظایف طراحی Design Task class

  • طراحی کلاس کاربر [1/3] Design the User class [1/3]

  • طراحی کلاس کاربر [1/3] Design the User class [1/3]

  • طراحی کلاس کاربر [2/3] Design the User class [2/3]

  • طراحی کلاس کاربر [2/3] Design the User class [2/3]

  • طراحی کلاس کاربر [3/3] Design the User class [3/3]

  • طراحی کلاس کاربر [3/3] Design the User class [3/3]

  • تست کد برای الزامات داده شده Testing the code for the given requirements

سیستم بازی بولینگ Bowling Game System

  • تعریف مشکل Problem Definition

  • کلاس Player را طراحی کنید [2/2] Design the Player class [2/2]

  • تست کد برای الزامات داده شده Testing the code for the given requirements

سیستم بازی بولینگ Bowling Game System

  • تعریف مشکل Problem Definition

  • یک جلسه بازی برای نمایش طراحی کنید Design a game session for the play

  • یک جلسه بازی برای نمایش طراحی کنید Design a game session for the play

  • کلاس Game را طراحی کنید Design the Game class

  • کلاس Game را طراحی کنید Design the Game class

  • کلاس Player را طراحی کنید [1/2] Design the Player class [1/2]

  • کلاس Player را طراحی کنید [1/2] Design the Player class [1/2]

  • کلاس Player را طراحی کنید [2/2] Design the Player class [2/2]

  • تست کد برای الزامات داده شده Testing the code for the given requirements

مار و پله Snakes And Ladders

  • تعریف مشکل Problem Definition

  • کلاس های پایه بازی را طراحی کنید Design the base classes for the game

  • کلاس Game مسئله را طراحی کنید Design the Game class of the problem

  • تست کد برای الزامات داده شده Testing the code for the given requirements

مار و پله Snakes And Ladders

  • تعریف مشکل Problem Definition

  • کلاس های پایه بازی را طراحی کنید Design the base classes for the game

  • کلاس Game مسئله را طراحی کنید Design the Game class of the problem

  • تست کد برای الزامات داده شده Testing the code for the given requirements

برنامه اشتراک پول/انتقال پول مانند Splitwise Money share/transfer application like Splitwise

  • کلاس User را طراحی کنید Design the User class

  • کلاس Expense را طراحی کنید Design the Expense class

  • طراحی کلاس Splitwise [1/3] Designing the class Splitwise [1/3]

  • طراحی کلاس Splitwise [2/3] Designing the class Splitwise [2/3]

  • تست کد برای الزامات داده شده Testing the code for the given requirements

  • پیچیدگی زمانی unordered_map در C++ Time Complexity of unordered_map in C++

  • تمرین: هزینه ها را ساده کنید Exercise: Simplify Expenses

برنامه اشتراک پول/انتقال پول مانند Splitwise Money share/transfer application like Splitwise

  • تعریف مشکل Problem Definition

  • کلاس User را طراحی کنید Design the User class

  • کلاس Expense را طراحی کنید Design the Expense class

  • طراحی کلاس Splitwise [1/3] Designing the class Splitwise [1/3]

  • طراحی کلاس Splitwise [2/3] Designing the class Splitwise [2/3]

  • طراحی کلاس Splitwise [3/3] Designing the class Splitwise [3/3]

  • طراحی کلاس Splitwise [3/3] Designing the class Splitwise [3/3]

  • تست کد برای الزامات داده شده Testing the code for the given requirements

  • بهینه سازی کد Optimizing the code

  • بهینه سازی کد Optimizing the code

  • پیچیدگی زمانی unordered_map در C++ Time Complexity of unordered_map in C++

  • تمرین: هزینه ها را ساده کنید Exercise: Simplify Expenses

  • راه حل: هزینه ها را ساده کنید Solution: Simplify Expenses

  • راه حل: هزینه ها را ساده کنید Solution: Simplify Expenses

سیستم نظرات فیس بوک Facebook Comment System

  • تعریف مشکل Problem Definition

  • تست کد برای الزامات داده شده Testing the code for the given requirements

سیستم نظرات فیس بوک Facebook Comment System

  • تعریف مشکل Problem Definition

  • کلاس Comment را طراحی کنید Design the Comment class

  • کلاس Comment را طراحی کنید Design the Comment class

  • کلاس Post را طراحی کنید Design the Post class

  • کلاس Post را طراحی کنید Design the Post class

  • کلاس User را طراحی کنید Design the User class

  • کلاس User را طراحی کنید Design the User class

سیستم مدیریت فروش Sales Management System

  • تعریف مشکل Problem Definition

  • کلاس State را طراحی کنید Design the State class

  • تست کد برای الزامات داده شده Testing the code for the given requirements

سیستم مدیریت فروش Sales Management System

  • تعریف مشکل Problem Definition

  • کلاس فروشگاه را طراحی کنید Design the Store class

  • کلاس فروشگاه را طراحی کنید Design the Store class

  • کلاس شهر را طراحی کنید Design the City class

  • کلاس شهر را طراحی کنید Design the City class

  • کلاس State را طراحی کنید Design the State class

  • کلاس System را طراحی کنید Design the System class

  • تست کد برای الزامات داده شده Testing the code for the given requirements

برنامه ویرایشگر متن Text Editor application

  • تعریف مشکل Problem Definition

  • طراحی کلاس Notepad [2/2] Designing the Notepad class [2/2]

  • تست کد برای الزامات داده شده Testing the code for the given requirements

برنامه ویرایشگر متن Text Editor application

  • تعریف مشکل Problem Definition

  • طراحی کلاس Notepad [1/2] Designing the Notepad class [1/2]

  • طراحی کلاس Notepad [1/2] Designing the Notepad class [1/2]

  • طراحی کلاس Notepad [2/2] Designing the Notepad class [2/2]

  • تست کد برای الزامات داده شده Testing the code for the given requirements

سیستم مدیریت کارکنان Employee Management System

  • تعریف مشکل Problem Definition

  • کلاس Employee را طراحی کنید Design the Employee class

  • کلاس System را طراحی کنید Design the System class

  • تست کد برای الزامات داده شده Testing the code for the given requirements

سیستم مدیریت کارکنان Employee Management System

  • تعریف مشکل Problem Definition

  • کلاس Employee را طراحی کنید Design the Employee class

  • کلاس System را طراحی کنید Design the System class

  • کلاس System را طراحی کنید Design the System class

  • تست کد برای الزامات داده شده Testing the code for the given requirements

سیستم فهرست کتاب Book Catalog System

  • تعریف مشکل Problem Definition

  • کلاس کاتالوگ را طراحی کنید Design the Catalog class

  • تست کد برای الزامات داده شده Testing the code for the given requirements

سیستم فهرست کتاب Book Catalog System

  • تعریف مشکل Problem Definition

  • کلاس کتاب را طراحی کنید Design the Book class

  • کلاس کتاب را طراحی کنید Design the Book class

  • کلاس کاتالوگ را طراحی کنید Design the Catalog class

  • تست کد برای الزامات داده شده Testing the code for the given requirements

زمانبندی کار Job Scheduler

  • تعریف مشکل Problem Definition

  • کلاس Job را طراحی کنید Design the Job class

  • طراحی کلاس Scheduler [1/2] Design the Scheduler class [1/2]

  • طراحی کلاس Scheduler [2/2] Design the Scheduler class [2/2]

  • تست کد برای الزامات داده شده Testing the code for the given requirements

زمانبندی کار Job Scheduler

  • تعریف مشکل Problem Definition

  • تعریف مشکل Problem Definition

  • کلاس Job را طراحی کنید Design the Job class

  • طراحی کلاس Scheduler [1/2] Design the Scheduler class [1/2]

  • طراحی کلاس Scheduler [2/2] Design the Scheduler class [2/2]

  • موارد تست را درک کنید Understand the Test Cases

  • موارد تست را درک کنید Understand the Test Cases

  • تست کد برای الزامات داده شده Testing the code for the given requirements

  • تست کد برای الزامات داده شده Testing the code for the given requirements

الحاقیه Addendum

الحاقیه Addendum

  • نکات اضافی برای مبتدیان Extra tips for beginners

  • نکات اضافی برای مبتدیان Extra tips for beginners

نمایش نظرات

آموزش طراحی سیستم سطح پایین [دیدگاه مصاحبه]
جزییات دوره
6.5 hours
73
Udemy (یودمی) Udemy (یودمی)
(آخرین آپدیت)
3,670
3.8 از 5
دارد
دارد
دارد
جهت دریافت آخرین اخبار و آپدیت ها در کانال تلگرام عضو شوید.

Google Chrome Browser

Internet Download Manager

Pot Player

Winrar

Abhishek Ghosh Abhishek Ghosh

مهندس نرم افزار، برنامه نویس و علاقمند به طراحی